import * as Url from 'url';
import { CommonUtils } from '../utils/commonutils';

export class FileInfo {
    /**文件或目录的路径 */
    filePath: string;
    /**文件大小，字节 */
    fileLength: number;
    /**文件或目录名称 */
    fileName: string;
    /**文件扩展名 */
    ext: string;
    /**文件显示图标名称 */
    extIcon: string;
    /**文件类型file 或directory */
    type: string;
    /**文件类型表示，file为：1，directory为：0 */
    typeFlag: number;
    /**文件最后访问时间 */
    lastAccessDate: Date;
    /**文件最后修改时间 */
    lastEditDate: Date;
    /**最后更改文件状态的时间 */
    lastChangeModeDate: Date;
    /**文件创建时间 */
    createDate: Date;
    /**设置为文件 */
    setFile() {
        this.type = 'file';
        this.typeFlag = 1;
    }
    /**设置为目录 */
    setDirectory() {
        this.type = 'directory';
        this.typeFlag = 0;
        this.setExt('_folder_');
    }
    /**
     * 设置文件扩展名
     * @param ext 文件扩展名
     */
    setExt(ext: string) {
        if (ext === '_folder_') {
            this.ext = 'folder';
            this.extIcon = 'folder';
        } else {
            this.ext = ext;
            this.extIcon = ext.startsWith('.') ? ext.substring(1) : ext;
        }
    }
    /**获取 file:/// 前缀格式化之后的路径*/
    get formatPath() {
        const uri = 'file:///' + Url.format(this.filePath);
        return uri;
    }
    /**获取是否为文件 */
    get isFile() { return this.type === 'file'; }
    /**获取是否为目录 */
    get isDirectory() { return this.type === 'directory'; }
    /**获取是否为图片文件(jpg、jpeg、png、gif、bmp格式) */
    get isImage() {
        return this.isFile && CommonUtils.isImage(this.ext);
    }
    /**获取是否为jpg图片文件(jpg、jpeg) */
    get isJpgImage() {
        return this.isFile && CommonUtils.isJpgImage(this.ext);
    }
    /**获取是否为mp4文件(mp4) */
    get isMp4() {
        return this.isFile && CommonUtils.isMp4(this.ext);
    }
    /**获取是否为ppt文件(ppt、pptx格式) */
    get isPPT() {
        return this.isFile && CommonUtils.isPPT(this.ext);
    }
    /**获取是否为word文件(doc、docx格式) */
    get isWord() {
        return this.isFile && CommonUtils.isWord(this.ext);
    }
    /**获取是否为zip文件(zip格式) */
    get isZip() {
        return this.isFile && CommonUtils.isZip(this.ext);
    }
    /**获取是否为txt文件(txt格式) */
    get isTxt() {
        return this.isFile && CommonUtils.isTxt(this.ext);
    }
    /**获取是否为json文件(json格式) */
    get isJson() {
        return this.isFile && CommonUtils.isJson(this.ext);
    }
    /**获取是否为xml文件(xml格式) */
    get isXml() {
        return this.isFile && CommonUtils.isXml(this.ext);
    }
    /**获取是否为ini文件(ini格式) */
    get isIni() {
        return this.isFile && CommonUtils.isIni(this.ext);
    }
    /**获取是否为config文件(config、cfg格式) */
    get isConfig() {
        return this.isFile && CommonUtils.isConfig(this.ext);
    }
    /**获取是否为html文件(html、htm格式) */
    get isHtml() {
        return this.isFile && CommonUtils.isHtml(this.ext);
    }
    /**获取是否为cs文件(.cs格式) */
    get isCS() {
        return this.isFile && CommonUtils.isCS(this.ext);
    }
    /**获取是否为xaml文件(.xaml格式) */
    get isXaml() {
        return this.isFile && CommonUtils.isXaml(this.ext);
    }
    /**获取是否为sql文件(.sql格式) */
    get isSql() {
        return this.isFile && CommonUtils.isSql(this.ext);
    }
    /**获取是否为文本格式(*.txt , *.json , *.xml , *.ini , *.config , *.cfg , *.html , *.htm , *.cs , *.xaml , *.sql)) */
    get isTextFormat() {
        return this.isFile && CommonUtils.isTextFormat(this.ext);
    }
}
